package classifiers;

import data_structures.HPConfiguration;
import weka.core.Instances;

/**
 * Classifier interface. Don't confuse with Weka's classifier.
 * 
 */
public interface Classifier {

	/**
	 * Evaluates the classifier using some measure. For example, 10-fold cross
	 * validation accuracy.
	 * 
	 * @param instances
	 *            Instances to train&test.
	 * @param hpConfiguration
	 *            The hyper-parameter configuration to perform the experiments.
	 * @return The accuracy of 10-fold cross validation or some other measure to
	 *         evaluate the classifier.
	 */
	public double evaluateClassifier(Instances instances,
			HPConfiguration hpConfiguration);

	/**
	 * Get a random hyper-parameter configuration that is compatible with the
	 * classifier's hyper-parameters
	 * 
	 * @return
	 */
	public HPConfiguration getHPConfiguration();
}
